package com.javafx.everythingdemo;

import com.javafx.everythingdemo.caches.Index;
import com.javafx.everythingdemo.config.SQLiteConfig;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;

import java.util.Map;
import java.util.Optional;

public class EverythingApplication extends Application {
    @Override
    public void start(Stage stage) throws Exception {
//        // 设置一个场景，场景里添加一个树形组件图，先创建一个标签
//        Label label = new Label("Hello JavaFx!");
//        // 创建布局，将标签放入布局里，BorderPane布局把场景划分为上下左右中，默认加入的控件在中间位置
//        BorderPane pane = new BorderPane(label);
//        // 创建场景，将布局放入场景里，设置宽度和高度
//        Scene scene = new Scene(pane, 300, 300);
//        exet(stage);
//        // 将场景设置到窗口里
//        stage.setScene(scene);
//        // 设置标题
//        stage.setTitle("我是窗口标题");
//        stage.show();


        TextField textField = new TextField();
        textField.setPromptText("输入查找的文件或者文件夹");
        HBox hBox = new HBox();
        hBox.getChildren().addAll(new Label("搜索框:"), textField);

        AnchorPane root = new AnchorPane();
        //搜索框
        AnchorPane.setTopAnchor(hBox,10.10);
        AnchorPane.setBottomAnchor(hBox,10.10);

        Button button0 = new Button("搜索");//按钮
        AnchorPane.setTopAnchor(button0,10.10);
        AnchorPane.setRightAnchor(button0,10.10);

        root.getChildren().add(button0);
        root.getChildren().add(hBox);
        Scene scene = new Scene(root, 300, 500);



        AnchorPane root2=new AnchorPane();
        Button button1 = new Button("返回原场景");
        AnchorPane.setBottomAnchor(button1,10.10);
        AnchorPane.setLeftAnchor(button1,10.10);

        ListView<String> listView = new ListView<>();
        VBox vBox = new VBox(listView);
        AnchorPane.setTopAnchor(vBox,10.10);
        AnchorPane.setLeftAnchor(vBox,10.10);

        root2.getChildren().add(button1);
        root2.getChildren().add(vBox);

        stage.setTitle("类everything");
        stage.setScene(scene);
        stage.show();


        Scene scene1 = new Scene(root2, 300, 500);
        button0.setOnAction(event -> {
            stage.setScene(scene1);
            String text = textField.getText();
            jdbc(listView,text);
            System.out.println(text);
        });
        button1.setOnAction(event -> {
            stage.setScene(scene);
        });
        stage.setScene(scene);
        Index.sst();
        stage.show();
        exet(stage);


    }

    public static void main(String[] args) {
        Application.launch(args);
    }

    /**
    获取数据
     */
    public void jdbc(ListView<String> listView,String name){
        Map<String, String> map = SQLiteConfig.selectName(name);
        ObservableList<String> items = FXCollections.observableArrayList();
        for (String s : map.keySet()) {
            items.add(map.get(s));
        }
        listView.setItems(items);


    }





//    private StackPane getSearchBox(){
//        Rectangle rectangle = new Rectangle();
//        rectangle.setArcHeight(4);
//        rectangle.setArcWidth(4);
//        rectangle.setStroke(Color.rgb(204,204,204));
//        rectangle.setStrokeWidth(1);
//        rectangle.setWidth(184);
//        rectangle.setHeight(28);
//        LinearGradient linearGradient = new LinearGradient(0, 0, 0, 1, true,
//                CycleMethod.NO_CYCLE, new Stop[] {
//                new Stop(0, Color.rgb(242, 242, 242)),
//                new Stop(1, Color.rgb(229, 229, 229))
//        });
//        rectangle.setFill(linearGradient);
//        rectangle.setTranslateX(0);
//        rectangle.setTranslateY(0);
//
//        String fontFamily = "宋体";
//        int fontSize = 12;
//        javafx.scene.text.Font javafxFont = new javafx.scene.text.Font(fontFamily, fontSize);
//
//        String labelText = "搜索：";
//        Label label = new Label(labelText);
//        label.setFont(javafxFont);
//
//        TextField queryTextField = new TextField();
//        queryTextField.setMaxWidth(80);
//        queryTextField.setPromptText("搜索");
//
//        Button button = new Button("搜索");
//
//        /*int fontStyle = Font.PLAIN;
//        java.awt.Font awtFont= new java.awt.Font(fontFamily, fontStyle, fontSize);
//        DebugGraphics graphics = new DebugGraphics();
//        button.setPrefWidth(graphics.getFontMetrics(awtFont).stringWidth(button.getText()) + 10);*/
//
//        FlowPane flowPane = new FlowPane();
//        flowPane.setHgap(5);
//        flowPane.setOrientation(Orientation.HORIZONTAL);
//        flowPane.setAlignment(Pos.CENTER);
//        flowPane.getChildren().addAll(label, queryTextField, button);
//
//        StackPane stackPane = new StackPane();
//        stackPane.getChildren().addAll(rectangle, flowPane);
//
//        return stackPane;
//    }

    /**
     * 控件1
     * @param stage
     */
    public static void kongjian(Stage stage){
        Label label = new Label("你好，JavaFx");
        label.setLayoutX(200);  // 设置控件X轴坐标
        label.setLayoutY(200);  // 设置控件Y轴坐标
        label.setStyle("-fx-background-color: red; -fx-border-color: blue; -fx-border-width: 3px"); // 设置控件风格，与css语法类似，只是前面加上-fx
        label.setPrefWidth(200);    // 设置控件背景宽度
        label.setPrefHeight(50);    // 设置控件背景高度
        label.setAlignment(Pos.CENTER); // 设置文本居中
        label.setVisible(false);    // 是否显示该控件
        label.setOpacity(0.5);  // 设置控件半透明值
        label.setRotate(70);    // 设置控件旋转角度
        label.setTranslateX(60);    // 设置X轴平移量
        label.setTranslateY(100);   // 设置Y轴平移量
        AnchorPane root = new AnchorPane();
        root.getChildren().add(label);
        Scene scene = new Scene(root, 500, 500);
        stage.setScene(scene);
        stage.show();
    }


    /**
     * 关闭窗口监听
     * @param stage
     */
    public static void exet(Stage stage){
        // 设置关闭窗口的监听事件，首先操作系统默认的关闭事件取消掉
        Platform.setImplicitExit(false);    // 取消操作系统默认退出事件，点击关闭后系统不结束运行
        stage.setOnCloseRequest(event -> { // 点击右上角关闭触发事件
            event.consume();    // 取消关闭窗口动作，点击关闭后不会关闭窗口
            Alert alert = new Alert(Alert.AlertType.CONFIRMATION);  // 弹出确认框
            alert.setTitle("退出程序");
            alert.setHeaderText(null);
            alert.setContentText("确认是否要退出程序？");
            Optional<ButtonType> result = alert.showAndWait();
            if (result.get() == ButtonType.OK) {    // 点击确定按钮
                SQLiteConfig.deletData();
                Platform.exit();    // 退出程序
                System.exit(0);
//                stage.close(); // 仅关闭窗口，不退出程序
            }
        });
        stage.setTitle("设置关闭窗口的监听事件Demo");
        //删除数据库

        stage.show();
    }
}
